using ERPBackend.Models;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace ERPBackend.Services.Interfaces
{
    public interface IProductionStockInService
    {
        Task<IEnumerable<ProductionStockIn>> GetAllProductionStockInsAsync();
        Task<int> GetTotalProductionStockInsAsync();
        Task<IEnumerable<ProductionStockIn>> GetProductionStockInsPagedAsync(int page, int pageSize);
        Task<ProductionStockIn?> GetProductionStockInByIdAsync(int id);
        Task<ProductionStockIn?> GetProductionStockInByCodeAsync(string stockInCode);
        Task<ProductionStockIn> CreateProductionStockInAsync(ProductionStockIn productionStockIn);
        Task<bool> UpdateProductionStockInAsync(ProductionStockIn productionStockIn);
        Task<bool> DeleteProductionStockInAsync(int id);
        Task<bool> ChangeProductionStockInStatusAsync(int id, string status, int? updatedBy);
        Task<bool> ApproveProductionStockInAsync(int id, int approvedBy, string? approvalRemark = null);
    }
}